home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 March / EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso / docs / corsoguide / interruptdoc-11.txt < prev    next >
Text File  |  1996-02-22  |  2KB  |  52 lines

  1. Il server di interrupt
  2.  
  3. Alla chiamata del server di interrupt vengono passati dal sistema una
  4. serie di importanti informazioni dal sistema in particolari registri (per
  5. questo si consiglia di scrivere il codice delle interrupt in assembler).
  6. I parametri dell'interrupt hardware diretta (che viene installata con
  7. SetIntServer) sono:
  8.  
  9. D0 - scratch (viene utilizzato dal sistema quindi il suo valore verrà
  10.      mutato)
  11. D1 - contiene i valori di INTENAR (il registro che indica quali interrupt
  12.      sono abilitate) e INTREQR (il registro che indica quali interrupt si
  13.      sono verificati) "and"ati fra loro, ed indica quali interrupt si sono
  14.      verificate effettivamente.
  15. A0 - inidirizzo base del set di chip custom.
  16. A1 - valore presente nel campo di is_Data dell'interrupt (quindi il
  17.      puntatore alle informazioni che l'installatore dell'interrupt vuole
  18.      passare)
  19. A5 - è usato come un vettore al tuo codice di interrupt
  20. A6 - punta alla base della libreria exec; serve per la chiamata di funzioni
  21.      exec
  22. Un codice di interrupt diretto deve ritornare con RTS (non con RTE come si
  23. dovrebbe fare per un installazione dell'interrupt diretto via hardware);
  24. prima di uscire bisogna cancellare il bit dell'interrupt relativo nel
  25. registro INTREQ per indicare che l'interrupt è stata servita.
  26.  
  27. I parametri dell'interrupt hardware installata con AddIntVector:
  28. D0 - scratch
  29. D1 - scratch
  30. A0 - scratch (tranne alcuni casi)
  31. A1 - valore del campo is_Data nella struttura Interrupt
  32. A5 - puntatore al codice di interrupt (scratch)
  33. A6 - scratch
  34. in questo caso dato che l'interrupt non è direttamente connessa al sistema
  35. non vi è bisogno di resettare il bit nel registro INTREQ; vi è però la
  36. possibilità di saltare tutte le interrupt che vengono dopo nella lista dei
  37. servers ponendo il flag Z a 1 (cancellato); nel caso in cui vogliate far
  38. seguire l'esecuzione a tutte le interrupt della lista bisogna settare il
  39. flag Z (porre a 0); il modo migliore per pilotare il flag Z è questo:
  40.  
  41. Setzflag_Chiamalaprossima:
  42.   MOVEQ #0,D0
  43.   RTS
  44.  
  45. Clearzflag_finiscilacatena:
  46.   MOVEQ #1,D0
  47.   RTS
  48.  
  49. I server di interrupt di questo tipo (installati con AddIntServer) possono
  50. essere attivati solo per le seguenti interrupt: PORTS, COPER, VERTB, EXTER e
  51. NMI.
  52.